H2 ডেটাবেজে Index হল একটি ডেটাবেজ অবজেক্ট যা টেবিলের একটি বা একাধিক কলামের উপর তৈরি করা হয় এবং ডেটাবেজের মধ্যে তথ্য অনুসন্ধান এবং অ্যাক্সেস করার গতি বাড়ানোর জন্য ব্যবহৃত হয়। Index তৈরি করার মাধ্যমে, আপনি দ্রুত তথ্য খুঁজে পাওয়ার জন্য ডেটাবেজের কার্যক্ষমতা উন্নত করতে পারেন। এটি বড় ডেটাবেজে কার্যকরীভাবে ব্যবহৃত হয় যেখানে ডেটার পরিমাণ অনেক বড় এবং অনুসন্ধান দ্রুত হওয়া প্রয়োজন।
CREATE INDEX <ইন্ডেক্স_নাম> ON <টেবিল_নাম> (<কলাম_নাম>);
ধরা যাক, আমাদের একটি students
টেবিল রয়েছে, এবং আমরা age
কলামের উপর একটি index তৈরি করতে চাই, যাতে বয়স অনুসারে দ্রুত তথ্য অনুসন্ধান করা যায়:
CREATE INDEX idx_age ON students(age);
এই কুয়েরি students
টেবিলের age
কলামের উপর একটি index তৈরি করবে। এর ফলে, age
কলামে কোনো শর্ত থাকলে (যেমন WHERE age = 25
), ডেটাবেজের কর্মক্ষমতা বাড়বে।
একাধিক কলামের উপর index তৈরি করতে হলে, সেই কলামগুলোকে কমা দিয়ে আলাদা করতে হবে। উদাহরণস্বরূপ, যদি name
এবং age
দুইটি কলামের উপর index তৈরি করতে চান:
CREATE INDEX idx_name_age ON students(name, age);
এই কুয়েরি students
টেবিলের name
এবং age
কলামের উপর একটি যৌথ (composite) index তৈরি করবে, যা যদি এই দুইটি কলামের ওপর অনুসন্ধান করা হয়, তাহলে ফলাফল দ্রুত আসবে।
UNIQUE
index একটি বিশেষ ধরনের index যা নিশ্চিত করে যে ওই কলামে কোনও duplicate (একই মানের) ডেটা থাকবে না। উদাহরণস্বরূপ, যদি আপনি student_id
কলামের উপর একটি UNIQUE
index তৈরি করতে চান:
CREATE UNIQUE INDEX idx_unique_student_id ON students(student_id);
এই কুয়েরি student_id
কলামের উপর একটি UNIQUE
index তৈরি করবে, যাতে student_id
এর মান সারা টেবিলে একে অপরের থেকে ভিন্ন থাকবে।
একটি টেবিলের PRIMARY KEY স্বয়ংক্রিয়ভাবে একটি UNIQUE
index তৈরি করে, যার ফলে ঐ কলামে duplicate ডেটা থাকতে পারে না। সাধারণত, PRIMARY KEY কলামের উপর index তৈরি করা হয়, এবং এটি ডেটাবেজের অটোমেটিক অংশ হয়।
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
এই টেবিলটি তৈরি করার সময় student_id
কলামের উপর PRIMARY KEY
index তৈরি হবে, যাতে এই কলামে একক মান (unique) থাকে।
Index তৈরির পর, ডেটাবেজে তথ্য অনুসন্ধান এবং অ্যাক্সেস করতে index স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়, যখন আপনার কুয়েরি WHERE
, JOIN
অথবা ORDER BY
ক্লজ ব্যবহার করে।
যেমন যদি আমরা students
টেবিল থেকে বয়স ২০ এর বেশি ছাত্রদের তথ্য দেখতে চাই, এবং আমরা age
কলামের উপর একটি index তৈরি করেছি:
SELECT * FROM students WHERE age > 20;
এই কুয়েরি চলানোর সময়, H2 ডেটাবেজ স্বয়ংক্রিয়ভাবে age
কলামের উপর তৈরি করা index ব্যবহার করবে, যার ফলে তথ্য খোঁজার গতি বাড়বে।
ধরা যাক, দুটি টেবিল students
এবং courses
আছে, এবং আমরা student_id
কলাম ব্যবহার করে এই দুটি টেবিলকে যুক্ত করতে চাই। যদি student_id
কলামের উপর একটি index তৈরি থাকে, তাহলে JOIN
অপারেশনটি দ্রুত হবে:
SELECT s.name, c.course_name
FROM students s
JOIN courses c ON s.student_id = c.student_id;
এই কুয়েরি চলানোর সময়, ডেটাবেজ student_id
কলামের উপর তৈরি করা index ব্যবহার করবে, ফলে JOIN
অপারেশনটি দ্রুত সম্পন্ন হবে।
ডেটাবেজে সঠিক index তৈরি করলে কুয়েরির পারফরম্যান্স অনেক বেড়ে যায়। তবে, অতিরিক্ত index তৈরি করলে সেগুলোর আপডেট করা এবং সঞ্চয় করা সময় নিয়ে আসে, তাই index তৈরি করার সময় সতর্কতা অবলম্বন করা উচিত। শুধু মাত্র সেই কলামগুলোর উপর index তৈরি করুন যা ডেটাবেজে বহুবার অনুসন্ধান করা হয়।
একটি index সাধারণত কিছু অতিরিক্ত ডিস্ক স্পেস ব্যবহার করে। অতএব, যখন ডেটাবেজে অনেক বড় টেবিল থাকে, তখন index এর জন্য পর্যাপ্ত ডিস্ক স্পেস নিশ্চিত করা উচিত।
যদি আপনি একটি index মুছে ফেলতে চান, তাহলে DROP INDEX
কুয়েরি ব্যবহার করতে হয়:
DROP INDEX idx_age;
এই কুয়েরি idx_age
নামক index মুছে ফেলবে। মনে রাখবেন, index মুছে ফেললে ডেটাবেজের কর্মক্ষমতা কিছুটা কমতে পারে যদি ওই indexটি গুরুত্বপূর্ণ ছিল।
Index ডেটাবেজের কার্যক্ষমতা বাড়ানোর একটি অত্যন্ত গুরুত্বপূর্ণ টুল। এটি ডেটাবেজের তথ্য অনুসন্ধান এবং অ্যাক্সেস প্রক্রিয়া দ্রুত করতে সাহায্য করে। তবে, যথাযথভাবে index ব্যবহার করা গুরুত্বপূর্ণ, কারণ অতিরিক্ত index তৈরি করলে সেগুলোর রক্ষণাবেক্ষণ এবং আপডেটের জন্য অতিরিক্ত সময় এবং ডিস্ক স্পেস প্রয়োজন। Index ব্যবহারের সময় ডেটাবেজের পারফরম্যান্স এবং ডিস্ক স্পেস ব্যবস্থাপনায় মনোযোগ দেয়া উচিত।
common.read_more